package ar.com.osdepym.agregacionafip.activities;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import ar.com.osdepym.agregacionafip.activities.context.AppContext;
import ar.com.osdepym.agregacionafip.adapters.Contenedor;
import ar.com.osdepym.agregacionafip.adapters.ContenedorCheckbox;
import ar.com.osdepym.agregacionafip.configuracion.ConfiguracionAplicacion;
import ar.com.osdepym.agregacionafip.servicios.ServicioConfiguracion;
import ar.com.osdepym.agregacionafip.validadores.CuitValidador;
import ar.com.osdepym.agregacionafip.validadores.DummyValidator;
import ar.com.osdepym.agregacionafip.validadores.MailValidador;

public class ConfiguracionActivity extends Activity implements OnClickListener {
	private ConfiguracionAplicacion ca;
	private AppContext app;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		init();
		onClickHandlers();
		loadConfig();

	}

	private void loadConfig() {

		TextView t = (EditText) findViewById(R.id.anexo_in);
		t.setText(ca.getAnexoArchivoSalida());
		
		t = (EditText) findViewById(R.id.dir_entrada_in);
		t.setText(formatDirOutput(ca.getDirectorioEntrada()));
		
		t = (EditText) findViewById(R.id.dir_salida_in);
		t.setText(formatDirOutput(ca.getDirectorioProcesados()));
		
		t = (EditText) findViewById(R.id.dir_proc_in);
		t.setText(formatDirOutput(ca.getDirectorioEnProceso()));
		
		t = (EditText) findViewById(R.id.cuil_afiliado_in);
		t.setText(ca.getCuilAfiliado());
		
		t = (EditText) findViewById(R.id.periodo_inicio_in);
		t.setText(ca.getPeriodoInicio());

		t = (EditText) findViewById(R.id.cuenta_envio_in);
		t.setText(ca.getCuentaEnvio());
		
		t = (EditText) findViewById(R.id.contrasena_envio_in);
		t.setText(ca.getPasswordEnvio());
		
		CheckBox cb = (CheckBox) findViewById(R.id.comprimir_archivo);
		cb.setChecked(ca.isComprirmir());
		
	}

	private void onClickHandlers() {
		Button b = (Button) findViewById(R.id.guardar_config);
		b.setOnClickListener(this);

		
//		b = (Button) findViewById(R.id.dir_entrada_brws);
//		b.setOnClickListener(this);
//		
//		b = (Button) findViewById(R.id.dir_salida_brws);
//		b.setOnClickListener(this);
//		
//		b = (Button) findViewById(R.id.dir_proc_brws);
//		b.setOnClickListener(this);
	}

	private void init() {

		setContentView(R.layout.configuracion);
		this.app = (AppContext) getApplicationContext();
		this.ca = app.getConfiguracionAplicacion();
	}

	@Override
	public void onClick(View arg0) {
		Button b = (Button) arg0;
		
		switch (b.getId()) {
		case R.id.guardar_config:
			fillConfig();
			if (this.ca.isValid()) {
				if(ca.directoriosValidos()){
				finish();
				}else{
					Toast.makeText(this, R.string.directorios_invalidos, Toast.LENGTH_LONG).show();
				}
			}else{
				Toast.makeText(this, R.string.campos_obligatorios, Toast.LENGTH_LONG).show();
			}
			break;

//		case R.id.dir_entrada_brws:
//			this.browsedControll = (EditText)findViewById(R.id.dir_entrada_in);
//			showDialog(DIALOG_LOAD_FILE);
//			break;
//		case R.id.dir_salida_brws:
//			this.browsedControll = (EditText)findViewById(R.id.dir_salida_in);
//			showDialog(DIALOG_LOAD_FILE);
//			break;
//		case R.id.dir_proc_brws:
//			this.browsedControll = (EditText)findViewById(R.id.dir_proc_in);
//			showDialog(DIALOG_LOAD_FILE);
//			break;
		}

	}

	private void fillConfig() {
		
		TextView t = (EditText) findViewById(R.id.anexo_in);
		ca.setAnexoArchivoSalida(t.getText().toString());
		t = (EditText) findViewById(R.id.dir_entrada_in);
		ca.setDirectorioEntrada(formatDirInput(t.getText().toString()));
		
		t = (EditText) findViewById(R.id.dir_salida_in);
		ca.setDirectorioDeProcesados(formatDirInput(t.getText().toString()));

		t = (EditText) findViewById(R.id.cuil_afiliado_in);
		ca.setCuilAfiliado(t.getText().toString());
		
		t = (EditText) findViewById(R.id.periodo_inicio_in);
		ca.setPeriodoInicio(t.getText().toString());
		
		t = (EditText) findViewById(R.id.dir_proc_in);
		ca.setDirectorioEnProceso(formatDirInput(t.getText().toString()));

		t = (EditText) findViewById(R.id.cuenta_envio_in);
		ca.setCuentaEnvio(t.getText().toString());
		
		t = (EditText) findViewById(R.id.contrasena_envio_in);
		ca.setPasswordEnvio(t.getText().toString());
		
		CheckBox cb = (CheckBox) findViewById(R.id.comprimir_archivo);
		ca.setComprimirArchivo(cb.isChecked());
		
		for (ContenedorCheckbox cuit: ca.getCuits()) {
			if(cuit.getChecked() == null){
				cuit.setChecked(false);
			}
		}
		ServicioConfiguracion sc = new ServicioConfiguracion();
		
		sc.guardarConfiguracion(ca);

	}

	private String formatDirInput(String string) {
		String s = new String(string);
		s.replace("/", "@%@");
		s.replace("@%@", "//");
		return s;
	}
	
	private String formatDirOutput(String string) {
		String s = new String(string);
		s.replace("/", "@%@");
		s.replace("@%@", "//");
		return s;
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.config_menu, menu);
		return true;
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {

		Intent intent = null;
		switch (item.getItemId()) {
		case R.id.Cuits_menu:
			
			app.setTipoOpcion("Cuits");
			app.setContenedorType(ContenedorCheckbox.class);
			app.setOpciones(ca.getCuits());
			app.setValidador(new CuitValidador());
			app.setInputType(InputType.TYPE_CLASS_NUMBER);
			
			
			intent = new Intent(this, ConfigOptionActivity.class);
			
			startActivity(intent);

			break;

		case R.id.Dest_archivo_menu:
			app.setTipoOpcion("Destinatarios de Archivo");
			app.setContenedorType(Contenedor.class);
			app.setOpciones(ca.getDestinatariosArchivo());
			app.setValidador(new MailValidador());
			app.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
			intent = new Intent(this, ConfigOptionActivity.class);
			startActivity(intent);
			break;

		case R.id.Dest_exitos_menu:
			app.setTipoOpcion("Destinatarios Exito");
			app.setContenedorType(Contenedor.class);
			app.setOpciones(ca.getDestinatariosExito());
			app.setValidador(new MailValidador());
			app.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
			intent = new Intent(this, ConfigOptionActivity.class);
			startActivity(intent);
			break;

		case R.id.Dest_falla_menu:
			app.setTipoOpcion("Destinatario Fallas");
			app.setContenedorType(Contenedor.class);
			app.setOpciones(ca.getDestinatariosFalla());
			app.setValidador(new MailValidador());
			app.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
			intent = new Intent(this, ConfigOptionActivity.class);
			startActivity(intent);
			break;

		case R.id.Filtro_tipo_archivo:
			app.setTipoOpcion("Tipos de Archivo a Contemplar");
			app.setContenedorType(Contenedor.class);
			app.setOpciones(ca.getFiltrosTipoArchivo());
			app.setValidador(new DummyValidator());
			app.setInputType(InputType.TYPE_CLASS_TEXT);
			intent = new Intent(this, ConfigOptionActivity.class);
			startActivity(intent);
			break;	
			
		default:
			break;
		}
		return true;
	}

	@Override
	public void onBackPressed() {
		Intent intent = new Intent(this, MainActivity.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
				| Intent.FLAG_ACTIVITY_CLEAR_TOP);
		startActivity(intent);
	}
	


//	private void loadFileList() {
//	    try {
//	        mPath.mkdirs();
//	    }
//	    catch(SecurityException e) {
//	        Log.e("file", "unable to write on the sd card " + e.toString());
//	    }
//	    if(mPath.exists()) {
//	    	
//	        mFileList = mPath.list();
//	    }
//	    else {
//	        mFileList= new String[0];
//	    }
//	}

	
	

//	@Override
//	protected Dialog onCreateDialog(int id) {
//		loadFileList();
//	    Dialog dialog = null;
//	    AlertDialog.Builder builder = new Builder(this);
//
//	    switch(id) {
//	        case DIALOG_LOAD_FILE:
//	            builder.setTitle("Choose your file");
//	            if(mFileList == null) {
//	                Log.e("file", "Showing file picker before loading the file list");
//	                dialog = builder.create();
//	                return dialog;
//	            }
//	            builder.setItems(mFileList, new DialogInterface.OnClickListener() {
//	                public void onClick(DialogInterface dialog, int which) {
//	                    
//	                    browsedControll.setText(mPath + "/" + mFileList[which]);
//
//	                }
//	            });
//	            break;
//	    }
//	    dialog = builder.show();
//	    return dialog;
//	}

	
	
}
